Basic Algorithms in python

Compute all combinations of a input string


In [1]:
def combinations(string):
    if len(string) == 1:
        return set([string, ''])
    result = set() 
    for i in range(len(string)):
        for com in combinations(string[:i] + string[(i+1):]):
            result.add(''.join(sorted(com)))
            result.add(''.join(sorted(com + string[i])))
    return result

print str(combinations('yasmeen'))


set(['', 'mny', 'aens', 'aeny', 'mns', 'ny', 'ens', 'amn', 'amy', 'aeeny', 'eensy', 'eemy', 'ams', 'aes', 'amns', 'eey', 'mnsy', 'aey', 'emn', 'eems', 'eem', 'een', 'aee', 'ems', 'emy', 'aen', 'em', 'amnsy', 'en', 'ee', 'aeensy', 'ey', 'ees', 'es', 'aemnsy', 'esy', 'eemn', 'aemny', 'asy', 'aeemnsy', 'aemns', 'aeens', 'emnsy', 'emsy', 'aem', 's', 'eesy', 'aeemns', 'nsy', 'aemsy', 'aesy', 'msy', 'eens', 'eeny', 'aeemny', 'amsy', 'aemy', 'emny', 'aems', 'aeem', 'emns', 'aees', 'eemns', 'aemn', 'aeey', 'eemny', 'mn', 'ensy', 'n', 'ms', 'my', 'ae', 'am', 'an', 'as', 'ans', 'ay', 'any', 'aeemy', 'aensy', 'aeems', 'amny', 'aeemn', 'eny', 'ns', 'aeemsy', 'ansy', 'eemsy', 'aeen', 'a', 'sy', 'e', 'm', 'y', 'eemnsy', 'aeesy'])

Convert a base-10 RGB value in ([0-255], [0-255], [0-255]) to a hex code

Verify with http://www.rgbtohex.net/


In [4]:
def hexcode(a,b,c):
    result = hex(a).upper()
    result += hex(b)[2:].upper()
    result += hex(c)[2:].upper()
    return result

print(hexcode(255, 32, 222))
print(hexcode(31, 156, 222))
print(hexcode(255, 255, 255))


0XFF20DE
0X1F9CDE
0XFFFFFF

Calculate the Levenshtein distance between string a and string b


In [5]:
def LeveDistance(a,b):
    distance = [[0 for i in range(len(b)+1)] for j in range(len(a)+1)]

    #initialize the first values into the matrix
    for i in range(len(a)+1):
        distance[i][0] = i

    for j in range(len(b)+1):
        distance[0][j] = j

    for j in range(1,len(b)+1):
        for i in range(1,len(a)+1):
            if(a[i-1] == b[j-1]):
                distance[i][j] = distance[i-1][j-1]
            else:
                deletion = distance[i-1][j]+1
                insertion = distance[i][j-1]+1
                substitution = distance[i-1][j-1]+1
                distance[i][j] = min(deletion,insertion,substitution)

    return distance[len(a)][len(b)]

print LeveDistance("kitten","sitting")
print LeveDistance("rosettacode","raisethysword")


3
8

Find the first non-repeating character in a string


In [6]:
from collections import OrderedDict 

def first_nonrepeating(string):
    d =  OrderedDict()
    for char in string:
        if char in d:
            d[char] += 1
        else:
            d[char] = 1
    while len(d) > 0:
        char, count = d.popitem(last=False)
        if count == 1:
            return char
    return None

print(first_nonrepeating('sterling cooper advertising agency'))


l

Sort all integers in the set in increasing order


In [7]:
def main():
    s=[1,53,5,7,99,12,4,68,3,100,2,22,43,10]
    for i in range(13):
        j=i
        while(s[j]>s[j+1] and j>=0):
        #all element is sorted
            a=s[j]
            s[j]=s[j+1]
            s[j+1]=a
            j-=1
    print s

In [9]:
if __name__ == '__main__':
    main()


[1, 2, 3, 4, 5, 7, 10, 12, 22, 43, 53, 68, 99, 100]

In [10]:
def permuteA(s):
    all =[]
    permutation = []
    if(len(s) == 2):
        permutation=[s[0]+s[1],s[1]+s[0]]
        return permutation
    for i in range(0,len(s)):
        permutation=permuteA(s.translate(None,s[i]))
        for word in permutation:
            all.append(s[i] + word)
    return all

def permuteB(s):
    permutation=[]
    for c in s:
        words=permuteB(s.translate(None,c))
        if(len(words) ==0):
            return c
        for word in words:
            permutation.append(c + word)
    return permutation

def permuteCHelper(s,permutations):
    for c in s:
        words=permuteCHelper(s.translate(None,c),permutations)
        if(len(s) ==0):
            permutations.append()
            return ""
        for word in words:
            permutations.append(c + word)
            print c+word
    return permutations

def permuteC(s):
    permutations = []
    return permuteCHelper(s,permutations)

def main():
    word="ABCDE"
    permutations = permuteC(word)
    print permutations
    print len(permutations)

    permutations = permuteA(word)
    print permutations

In [11]:
if __name__ == '__main__':
    main()


[]
0
['ABCDE', 'ABCED', 'ABDCE', 'ABDEC', 'ABECD', 'ABEDC', 'ACBDE', 'ACBED', 'ACDBE', 'ACDEB', 'ACEBD', 'ACEDB', 'ADBCE', 'ADBEC', 'ADCBE', 'ADCEB', 'ADEBC', 'ADECB', 'AEBCD', 'AEBDC', 'AECBD', 'AECDB', 'AEDBC', 'AEDCB', 'BACDE', 'BACED', 'BADCE', 'BADEC', 'BAECD', 'BAEDC', 'BCADE', 'BCAED', 'BCDAE', 'BCDEA', 'BCEAD', 'BCEDA', 'BDACE', 'BDAEC', 'BDCAE', 'BDCEA', 'BDEAC', 'BDECA', 'BEACD', 'BEADC', 'BECAD', 'BECDA', 'BEDAC', 'BEDCA', 'CABDE', 'CABED', 'CADBE', 'CADEB', 'CAEBD', 'CAEDB', 'CBADE', 'CBAED', 'CBDAE', 'CBDEA', 'CBEAD', 'CBEDA', 'CDABE', 'CDAEB', 'CDBAE', 'CDBEA', 'CDEAB', 'CDEBA', 'CEABD', 'CEADB', 'CEBAD', 'CEBDA', 'CEDAB', 'CEDBA', 'DABCE', 'DABEC', 'DACBE', 'DACEB', 'DAEBC', 'DAECB', 'DBACE', 'DBAEC', 'DBCAE', 'DBCEA', 'DBEAC', 'DBECA', 'DCABE', 'DCAEB', 'DCBAE', 'DCBEA', 'DCEAB', 'DCEBA', 'DEABC', 'DEACB', 'DEBAC', 'DEBCA', 'DECAB', 'DECBA', 'EABCD', 'EABDC', 'EACBD', 'EACDB', 'EADBC', 'EADCB', 'EBACD', 'EBADC', 'EBCAD', 'EBCDA', 'EBDAC', 'EBDCA', 'ECABD', 'ECADB', 'ECBAD', 'ECBDA', 'ECDAB', 'ECDBA', 'EDABC', 'EDACB', 'EDBAC', 'EDBCA', 'EDCAB', 'EDCBA']

Reverse a string


In [13]:
def reverse_1(string):
    return string[::-1]

def reverse_2(string):
    rev = '' 
    for i in range(len(string)):
        index = len(string) - i - 1
        rev += string[index]
    return rev

print reverse_1('sterling cooper advertising agency')
print reverse_2('sterling cooper advertising agency')


ycnega gnisitrevda repooc gnilrets
ycnega gnisitrevda repooc gnilrets

Convert a 10-integer phone number to every possible alphabetical combinations on a telephone keypad.

Do not replace number 0 and 1 with any alphabet.


In [14]:
def phone_keypad(num):
    result = ['0', '1', 'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PRS', 'TUV', 'WXY']
    return result[num]

def alphabets(nums):
    if len(nums) == 0:
        return set()

    retval = set()
    all_endings = alphabets(nums[1:])
    for char in phone_keypad(int(nums[0])):
        if len(all_endings) == 0:
            retval.add(char) 
        for ending in all_endings:
            retval.add(char + ending)
    return retval

In [15]:
print str(alphabets('5106493114'))


set(['L10MIYF11H', 'L10MIYF11I', 'J10OGXE11H', 'J10OGXE11I', 'J10OGXE11G', 'L10MIYF11G', 'K10OIYF11G', 'K10OIYF11I', 'K10OIYF11H', 'K10NHYD11G', 'J10NGXE11I', 'J10NGXE11H', 'J10NGXE11G', 'K10NHXE11G', 'L10MGXD11H', 'L10MHWE11I', 'K10OHXE11H', 'K10OHXE11I', 'K10OHXE11G', 'L10OIWF11G', 'L10NHYD11H', 'L10NHYD11I', 'L10NHYD11G', 'L10OIWF11H', 'L10OIWF11I', 'L10OHWD11H', 'K10OIXF11H', 'J10MIWE11G', 'J10MIWE11I', 'J10MIWE11H', 'K10NHXE11H', 'K10MHXF11G', 'J10MGWF11G', 'K10NIWE11G', 'L10MHYD11I', 'J10NHXE11G', 'K10OIXF11G', 'J10NHXE11H', 'J10OGYE11H', 'K10NIWE11I', 'K10NIWE11H', 'J10MGWF11H', 'J10MGWF11I', 'L10NIXD11G', 'L10NIXD11H', 'L10NIXD11I', 'K10NGXD11G', 'K10MHXD11H', 'L10NIYD11G', 'J10NIXD11G', 'K10MHXD11G', 'K10NGXD11H', 'L10OGYE11I', 'L10OGYE11H', 'J10MHYD11I', 'J10MHYD11H', 'L10NHWF11H', 'L10NHWF11I', 'L10NHWF11G', 'J10MHYD11G', 'L10OGYE11G', 'L10NGWE11I', 'K10OIYD11I', 'K10OIYD11H', 'J10MGXD11G', 'K10NIYF11G', 'J10NGYD11G', 'K10NIWF11G', 'J10NGYD11I', 'K10NIWF11I', 'J10MGXD11I', 'J10MGXD11H', 'K10OIYD11G', 'L10OIXF11H', 'J10NHYD11H', 'J10NHYD11I', 'K10OHWF11H', 'K10OHWF11I', 'K10OHWF11G', 'J10NHYD11G', 'J10NIYF11I', 'J10NIYF11H', 'K10OGXD11G', 'K10MIYD11G', 'K10OGXD11H', 'K10OGXD11I', 'J10NIYF11G', 'L10MIWD11H', 'L10MIWD11I', 'L10NHXF11G', 'L10MIWD11G', 'K10NHXD11H', 'J10OIYF11G', 'J10OHXE11G', 'J10MIYE11I', 'J10MIYE11H', 'J10MIYE11G', 'J10OHXE11I', 'J10OHXE11H', 'J10OIYF11H', 'J10OIYF11I', 'K10MIYD11H', 'K10MGWE11H', 'K10MGWE11I', 'J10MIXD11G', 'L10MIXD11H', 'J10MIXD11I', 'J10MIXD11H', 'K10MGWE11G', 'J10MHXE11I', 'J10MHXE11H', 'J10MHXE11G', 'J10MHWD11I', 'J10MHWD11H', 'L10MIYE11G', 'L10MIYE11I', 'L10MIYE11H', 'J10MHWD11G', 'K10NGXF11I', 'K10NGXF11H', 'L10NGXF11H', 'L10NGXF11I', 'L10NGYE11G', 'L10NGYE11H', 'L10NGYE11I', 'L10NGXF11G', 'K10NGXF11G', 'K10MGYE11H', 'K10MGYE11I', 'K10MHYF11H', 'K10MHYF11I', 'K10MHYF11G', 'K10MGYE11G', 'J10NHXF11I', 'J10NHXF11H', 'L10NGXE11G', 'L10NGXE11I', 'L10NGXE11H', 'J10NHXF11G', 'K10OGXF11H', 'K10OGXF11I', 'L10OHYD11G', 'K10OHXF11G', 'K10OIXF11I', 'K10OHXF11I', 'K10OHXF11H', 'L10OHYD11I', 'L10OHYD11H', 'K10OGXF11G', 'L10NHXD11I', 'L10NHXD11H', 'L10NHXD11G', 'L10NIXF11H', 'L10NIXF11I', 'L10NIXF11G', 'J10MIWD11G', 'K10NIYE11I', 'K10NIYE11H', 'J10MHYF11I', 'J10MHYF11H', 'J10MHYF11G', 'K10NIYE11G', 'J10MIWD11H', 'J10MIWD11I', 'L10MHYE11G', 'L10MHYE11H', 'L10MHYE11I', 'L10MIWF11G', 'K10NIWD11H', 'K10NIWD11I', 'L10NHWE11I', 'K10NIWD11G', 'L10MIWF11H', 'L10MIWF11I', 'L10OHXD11G', 'J10OIWD11G', 'K10NIXD11I', 'K10NIXD11H', 'K10NIXD11G', 'J10OIWD11H', 'J10OIWD11I', 'L10OHXD11H', 'L10OHXD11I', 'L10OIXD11I', 'L10OIXD11H', 'K10NHYE11G', 'L10OIXD11G', 'J10NIYE11G', 'J10NIYE11H', 'J10NIYE11I', 'L10OIYE11G', 'L10OIYE11I', 'L10OIYE11H', 'J10MGXF11G', 'J10NIWD11I', 'J10NIWD11H', 'L10OIWD11G', 'J10NIWD11G', 'J10MGXF11I', 'J10MGXF11H', 'L10NHWE11G', 'J10MHXF11G', 'J10MIYD11H', 'J10MIYD11I', 'K10MGWF11G', 'K10MGWF11I', 'K10MGWF11H', 'L10OGXF11G', 'J10MIYD11G', 'J10MHXF11H', 'J10MHXF11I', 'K10NGWE11I', 'K10NGWE11H', 'L10MGYE11I', 'L10MGYE11H', 'L10MGYE11G', 'K10NGWE11G', 'L10OHYF11H', 'K10NGWD11H', 'K10NGWD11I', 'L10MHYF11G', 'K10NGXD11I', 'L10OHWD11I', 'J10NGXD11H', 'J10NGXD11I', 'J10OIYD11H', 'J10OIYD11I', 'J10OIYD11G', 'J10NGXD11G', 'K10MGYF11I', 'L10NHYE11I', 'L10NHYE11H', 'K10MGYF11H', 'L10NHYE11G', 'K10MHWD11H', 'K10MHWD11I', 'K10MHWD11G', 'L10NGXD11G', 'L10MGYD11G', 'J10OHXD11G', 'J10OHXD11H', 'J10OHXD11I', 'L10NGYF11H', 'L10NGXD11H', 'L10NGXD11I', 'L10NHXE11H', 'L10NHXE11I', 'J10OIWF11H', 'J10OIWF11I', 'K10MIWF11G', 'J10OIWF11G', 'L10MGXD11G', 'L10NHXE11G', 'J10OGYE11G', 'J10MIXE11G', 'L10OGXD11I', 'L10OGXD11H', 'J10OHYF11G', 'L10OIWD11H', 'L10OIWD11I', 'K10OHYE11I', 'J10OHYF11I', 'J10OHYF11H', 'L10OGXD11G', 'J10OGYE11I', 'J10MIXE11I', 'K10NGXE11G', 'K10OGYD11I', 'K10OGYD11H', 'K10OGYD11G', 'K10NGXE11H', 'K10NGXE11I', 'J10MHYE11H', 'J10MHYE11I', 'L10NIWD11I', 'K10NGYF11G', 'K10NGYF11H', 'K10NGYF11I', 'K10OHYE11G', 'J10MHYE11G', 'J10NGYE11G', 'J10NHXE11I', 'J10OIXF11I', 'J10OIXF11H', 'J10OIXF11G', 'J10NGYE11H', 'J10NGYE11I', 'L10MIXD11G', 'K10MHXF11I', 'L10MIXD11I', 'K10MHXF11H', 'J10OGWE11I', 'J10OGWE11H', 'K10MHXE11H', 'K10MHXE11I', 'K10MHXE11G', 'J10OGWE11G', 'K10NGYE11G', 'L10MHWD11I', 'L10MHWD11H', 'K10NGYE11I', 'K10NGYE11H', 'K10OHYE11H', 'L10MHWD11G', 'J10NGXF11G', 'L10OIYD11G', 'K10OIYE11H', 'K10OIYE11I', 'K10OIYE11G', 'L10OIYF11I', 'L10OIYD11H', 'L10OIYD11I', 'J10NGXF11H', 'J10NGXF11I', 'L10OIYF11G', 'J10MGXE11G', 'J10MGXE11H', 'J10MGXE11I', 'L10MIYD11G', 'L10MIYD11H', 'L10MIYD11I', 'K10MHXD11I', 'J10OIXD11I', 'J10OIXD11H', 'K10NIXE11G', 'L10OHYE11G', 'L10OHYE11H', 'L10OHYE11I', 'K10NIXE11H', 'K10NIXE11I', 'J10OIXD11G', 'L10OHXF11I', 'J10OHXF11H', 'J10OHXF11I', 'L10MGWF11H', 'L10MGWF11I', 'J10MHXD11H', 'J10MHXD11I', 'J10MHXD11G', 'L10MGWF11G', 'J10OHXF11G', 'K10OGYF11G', 'L10NIYF11I', 'K10OGYF11I', 'K10OGYF11H', 'K10OIWF11I', 'K10OIWF11H', 'K10OIWF11G', 'J10NIXD11H', 'J10NIXE11G', 'J10NIWE11G', 'J10NIWE11H', 'J10NIWE11I', 'J10NIXE11I', 'J10NIXE11H', 'K10NIYD11H', 'K10NIYD11I', 'J10MGYF11H', 'J10MGYF11I', 'L10NGWE11G', 'J10MGYF11G', 'K10NIYD11G', 'K10NHYF11I', 'K10NHYF11H', 'K10MIYD11I', 'L10OHXF11H', 'K10NGWF11G', 'K10NGWF11H', 'K10NGWF11I', 'K10NHYF11G', 'K10OGWD11I', 'L10OIXF11G', 'K10MIYF11H', 'J10MIYF11G', 'K10MGXE11G', 'K10MGXE11I', 'K10MGXE11H', 'J10MIYF11H', 'J10MIYF11I', 'J10MHWF11G', 'J10OHYD11G', 'L10NIWE11H', 'L10NIWE11I', 'L10NIWE11G', 'J10OHYD11I', 'J10OHYD11H', 'J10MHWF11I', 'J10MHWF11H', 'J10OGWF11G', 'L10NGWE11H', 'L10MHXF11G', 'J10OGWF11H', 'J10OGWF11I', 'L10MGYD11H', 'K10OGWF11G', 'K10OGWF11I', 'K10OGWF11H', 'K10OIWD11I', 'K10OIWD11H', 'L10NIYF11G', 'K10OIWD11G', 'L10MHWF11I', 'L10MHWF11H', 'L10MIXF11G', 'L10NIYE11I', 'L10OIXE11H', 'L10OIXE11I', 'L10OIXE11G', 'L10MIXF11I', 'L10MIXF11H', 'L10MHWF11G', 'L10NIYD11H', 'K10NIWF11H', 'K10NIXF11I', 'K10NIXF11H', 'J10NGYD11H', 'K10NIXF11G', 'K10NIYF11H', 'J10OIYE11I', 'J10OIYE11H', 'K10NIYF11I', 'J10NGWD11G', 'L10MGYD11I', 'J10NGWD11I', 'J10NGWD11H', 'J10OIYE11G', 'K10NGWD11G', 'K10OGYE11H', 'K10OGYE11I', 'K10MIWD11G', 'K10MIWD11I', 'K10MIWD11H', 'K10NHYD11I', 'K10OGYE11G', 'L10MHYD11H', 'L10OIYF11H', 'L10MIXE11G', 'L10MIXE11H', 'L10MIXE11I', 'J10NIWF11I', 'J10NIWF11H', 'J10NIWF11G', 'J10OIXE11H', 'J10OIXE11I', 'L10MGWE11G', 'L10MGWE11I', 'L10MGWE11H', 'J10OIXE11G', 'K10OHYF11H', 'K10OHYF11I', 'K10OHYF11G', 'L10NGWD11G', 'L10OGWE11H', 'L10MHXF11I', 'L10OGWE11G', 'J10OHWD11I', 'J10OHWD11H', 'J10OHWD11G', 'L10OGXF11I', 'L10OGWE11I', 'L10OGXF11H', 'L10OGXE11H', 'L10OGXE11I', 'J10OGYD11G', 'J10MGYE11G', 'L10OHWF11H', 'J10MGYE11I', 'J10MGYE11H', 'J10OGYD11H', 'J10OGYD11I', 'L10OGXE11G', 'L10MGXF11I', 'J10NIXF11G', 'J10NIXF11H', 'J10NIXF11I', 'K10NHWD11I', 'K10NHWD11H', 'K10NHWD11G', 'L10NIWD11H', 'L10MHYD11G', 'L10NIYD11I', 'L10NIWF11G', 'L10NIWF11I', 'L10NIWF11H', 'L10OHYF11G', 'L10MGYF11G', 'J10NGWF11G', 'L10OGYF11G', 'K10OHWE11G', 'K10OHWE11I', 'K10OHWE11H', 'J10NGWF11I', 'J10NGWF11H', 'L10MGYF11H', 'L10MGYF11I', 'L10MHXE11I', 'L10MHXE11H', 'L10MHXE11G', 'K10NGYD11H', 'K10NGYD11I', 'L10NHXF11I', 'L10MHWE11H', 'K10NGYD11G', 'L10NHXF11H', 'L10NIYE11H', 'L10OHWF11I', 'L10OHYF11I', 'L10NGWD11H', 'J10OGXF11G', 'L10OHWF11G', 'J10NHWE11G', 'J10MGWE11I', 'J10MGWE11H', 'J10MGWE11G', 'J10NHWE11I', 'J10NHWE11H', 'J10OGXF11I', 'J10OGXF11H', 'K10MGXD11G', 'K10MGXD11H', 'K10MGXD11I', 'K10NHYE11I', 'J10OGXD11I', 'J10OGXD11H', 'J10OGXD11G', 'L10NHWE11H', 'K10MIWE11G', 'K10OHYD11G', 'L10NGWF11I', 'L10NGWF11H', 'L10NGWF11G', 'K10OHYD11H', 'K10OHYD11I', 'L10MHYF11I', 'L10NGYF11G', 'K10MIWE11H', 'K10MIWE11I', 'K10MHYE11G', 'K10NHXD11I', 'K10MGYF11G', 'J10NHYF11G', 'L10OHWD11G', 'J10NHWF11G', 'J10NHWF11H', 'J10NHWF11I', 'J10NHYF11H', 'J10NHYF11I', 'K10MHYE11I', 'K10MHYE11H', 'L10MGXF11H', 'L10MGXF11G', 'L10OIWE11G', 'L10NGYF11I', 'K10NHXD11G', 'K10OGWD11G', 'J10NIXD11I', 'K10MIYF11I', 'K10OGWD11H', 'K10MHWE11I', 'K10MHWE11H', 'L10OGWD11G', 'J10OHWE11H', 'J10OHWE11I', 'J10OHWE11G', 'L10OGWD11H', 'L10OGWD11I', 'K10MHWE11G', 'J10MGYD11G', 'K10OHXD11I', 'K10OHXD11H', 'K10OHXD11G', 'J10MGYD11H', 'J10MGYD11I', 'L10NIWD11G', 'K10MIXF11H', 'K10MIXF11I', 'K10MIYE11G', 'K10MIYE11H', 'K10MIYE11I', 'K10MIXF11G', 'K10NHYD11H', 'J10OHYE11H', 'J10OHYE11I', 'J10OGYF11H', 'J10OGYF11I', 'L10MGXD11I', 'J10OGYF11G', 'J10OHYE11G', 'K10OIXE11G', 'K10MIXE11G', 'K10MIXE11I', 'K10MIXE11H', 'K10OIXE11I', 'K10OIXE11H', 'K10OIWE11H', 'K10OIWE11I', 'K10OIWE11G', 'J10NGWE11G', 'J10NGWE11H', 'J10NGWE11I', 'K10MGXF11H', 'K10MGXF11I', 'K10MGXF11G', 'J10NHYE11I', 'J10NHYE11H', 'L10OGYD11H', 'L10OGYD11I', 'L10OGYD11G', 'J10NHYE11G', 'J10MGWD11H', 'J10MGWD11I', 'K10OGXE11G', 'J10MGWD11G', 'L10NIYE11G', 'J10NHWD11H', 'J10NHWD11I', 'K10NHWE11G', 'L10MIWE11I', 'L10MIWE11H', 'L10MIWE11G', 'K10NHWE11H', 'K10NHWE11I', 'K10NHXE11I', 'J10NHWD11G', 'J10NHXD11I', 'J10NHXD11H', 'J10NHXD11G', 'L10MGWD11G', 'L10MGWD11H', 'L10MGWD11I', 'L10MHXD11H', 'L10MHXD11I', 'L10NHYF11G', 'L10NIXE11G', 'L10NIXE11I', 'L10NIXE11H', 'L10NHYF11H', 'L10NHYF11I', 'L10MHXD11G', 'K10MGYD11G', 'L10MHYF11H', 'K10MGYD11I', 'K10MGYD11H', 'K10MHWF11G', 'J10MHWE11H', 'J10MHWE11I', 'J10MHWE11G', 'K10MHWF11H', 'K10MHWF11I', 'L10NGYD11G', 'J10OHWF11G', 'J10OHWF11I', 'J10OHWF11H', 'L10NGYD11I', 'L10NGYD11H', 'K10OGWE11H', 'K10OGWE11I', 'K10OGWE11G', 'L10OIWE11I', 'L10OIWE11H', 'J10MIWF11H', 'J10MIWF11I', 'J10MIWF11G', 'L10NIYF11H', 'K10NHYE11H', 'J10MIXE11H', 'L10OGWF11H', 'L10OGYF11H', 'L10OGWF11I', 'L10OGYF11I', 'J10OGWD11H', 'J10OGWD11I', 'L10NGWD11I', 'J10OGWD11G', 'K10MIXD11G', 'K10OIXD11G', 'K10OIXD11H', 'K10OIXD11I', 'K10MIXD11H', 'K10MIXD11I', 'J10OIWE11G', 'K10NHWF11I', 'K10NHWF11H', 'L10OHWE11H', 'L10OHXE11G', 'L10OHXE11I', 'L10OHXE11H', 'K10NHWF11G', 'J10OIWE11I', 'J10OIWE11H', 'J10NIYD11G', 'J10MIXF11I', 'J10MIXF11H', 'J10MIXF11G', 'J10NIYD11I', 'J10NIYD11H', 'L10NHWD11G', 'K10OHWD11G', 'K10OHWD11H', 'K10OHWD11I', 'L10NHWD11H', 'L10NHWD11I', 'K10MIYF11G', 'K10MGWD11I', 'K10MGWD11H', 'K10MGWD11G', 'K10OGXE11I', 'L10OIXF11I', 'K10OGXE11H', 'L10OHWE11G', 'K10MHYD11G', 'K10MIWF11I', 'J10NGYF11I', 'J10NGYF11H', 'J10NGYF11G', 'L10OGWF11G', 'L10MHXF11H', 'K10MIWF11H', 'K10MHYD11H', 'K10MHYD11I', 'L10OHXF11G', 'L10OHWE11I', 'L10MGXE11G', 'L10MHWE11G', 'K10NHXF11G', 'K10NHXF11H', 'K10NHXF11I', 'L10MGXE11H', 'L10MGXE11I'])

In [ ]: